/*
 * Activation.h
 *
 *  Created on: Sep 5, 2013
 *      Author: filipe
 */

#ifndef ACTIVATION_H_
#define ACTIVATION_H_


class ActivationFunction
{
	public:
		ActivationFunction();
		virtual ~ActivationFunction();
		virtual double Evaluate(double value) = 0;
};


class LinearActivationFunction : public ActivationFunction
{
	double _slope;

	public:
		LinearActivationFunction(double slope);
		virtual ~LinearActivationFunction();
		virtual double Evaluate(double value);
};


class SignalActivationFunction : public ActivationFunction
{
	double _smoothness;

	public:
		SignalActivationFunction(double smoothness);
		~SignalActivationFunction();
		double Evaluate(double value);
};


class StepActivationFunction : public ActivationFunction
{
	public:
		StepActivationFunction();
		~StepActivationFunction();
		double Evaluate(double value);
};

#endif /* ACTIVATION_H_ */
